package handlers.misawa;
import com.github.masahitojp.botan.Robot;
import com.github.masahitojp.botan.handler.BotanMessageHandlers;
import com.github.masahitojp.botan.utils.BotanUtils;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.Collection;
import java.util.List;
@SuppressWarnings("unused")
public class MisawaHandlers implements BotanMessageHandlers {
private static Logger log = LoggerFactory.getLogger(MisawaHandlers.class);
private static String ERROR_PREFIX = "JIGOKU-NO-MISAWA image request failed : ";
@Override
public void register(final Robot robot) {
robot.respond(
"(?i)misawa\\z",
"returns JIGOKU-NO-MISAWA image",
message -> {
final OkHttpClient client = new OkHttpClient();
final String url = "http://horesase.github.io/horesase-boys/meigens.json";
final Request request = new Request.Builder()
.url(url)
.build();
try {
final Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
final String src = response.body().string();
final Type collectionType = new TypeToken<Collection<Meigen>>() {
}.getType();
final List<Meigen> rootAsMap = new Gson().fromJson(src, collectionType);
message.reply(BotanUtils.getRandomValue(rootAsMap).image);
} else {
message.reply(ERROR_PREFIX + String.format("http request failed (%d)", response.code()));
}
} catch (IOException e) {
log.warn(e.getMessage());
message.reply(ERROR_PREFIX + e.getMessage());
}
}
);
}
}